package com.rm.zeyou.util.user;

/**
 * 用户ID管理器，使用ThreadLocal实现线程间的用户ID隔离。
 */
public class UserIdManager {

    /**
     * 用于存储当前线程所关联的用户ID的ThreadLocal变量。
     */
    private static final ThreadLocal<Integer> USER_ID_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 绑定用户ID到当前线程。
     *
     * @param userId 要绑定的用户ID，不应为null。
     * @throws IllegalArgumentException 如果userId为null，则抛出此异常。
     */
    public static void setUserId(Integer userId) {
        if (userId == null) {
            throw new IllegalArgumentException("userId cannot be null");
        }
        USER_ID_THREAD_LOCAL.set(userId);
    }

    /**
     * 获取当前线程所关联的用户ID。
     *
     * @return 当前线程的用户ID，如果未设置，则返回null。
     */
    public static Integer getUserId() {
        return USER_ID_THREAD_LOCAL.get();
    }

    /**
     * 清除当前线程所关联的用户ID。
     */
    public static void clear() {
        USER_ID_THREAD_LOCAL.remove();
    }
}
